Hello, 各位 iT 邦幫忙 的粉絲們大家好~~~
在本系列文會延續 Re: 從零改用 .NET MAUI 技術來繼續過去用 Xamarin 技術開發的一個 App : TopStore 使用 .NET MAUI 技術所建立的 TopStore App ,更新 .NET MAUI 在 .NET 6 轉換到 .NET 7 時所需要調整的部分,並持續地的開發 TopStore App 其他需要的功能。
本篇是 Re: 從零續用 .NET MAUI 技術開發過去的一個 App : TopStore 系列 系列文的 EP26。
在處理 Order 資料建立的部分之後,就要開始處理 OrderDetail 的資料紀錄,當然就要調整 MockData、DataService 與 IDataService 的設計。
首先,在 IDataService 增加一個 AddOrderDetail 方法的宣告,並透過實作介面的處理幫 MockData 與 DataService 都實作好 AddOrderDtail 方法。
在 IDataService:
int AddOrderDetail(Models.OrderDetail orderDetail);
完成結果如下圖:
在 DataService:
public int AddOrderDetail(Models.OrderDetail orderDetail);
{
throw new NotImplementedException();
}
完成結果如下圖:
在 MockData:
public int AddOrderDetail(Models.OrderDetail orderDetail);
{
var order = new Models.Order() { Id = orders.Last().Id + 1 , OrderDate = DateTime.Now, PersonId = personId };
orders.Add(order);
return order.Id;
}
完成結果如下圖:
繼續要調整的是 AddOrderPage 與 AddOrderPageViewModel。
首先針對 AddOrderPageViewModel 增加三個 ObservableProperty
屬性,以便 AddOrderPage 可以直接繫結:
[ObservableProperty]
private decimal _salePrice;
[ObservableProperty]
private int _saleQuantity;
[ObservableProperty]
private string _saleNote;
完成結果如下圖:
繼續找到在 AddOrderPageViewModel 設計的 ProductId 屬性的 Set,加上設定 SalePrice、SaleQuantity、SaleNote 的初始值:
SalePrice = CurrentProduct.Price;
SaleQuantity = 1;
SaleNote = "無";
完成結果如下圖:
仍舊在 AddOrderPageViewModel 當中,並找到先前設計的 Done 方法,在轉跳前加入執行 AddOrderDetail 方法的程式:
App.DataService.AddOrderDetail(new OrderDetail
{
OrderId = OrderId,
ProductId = CurrentProduct.Id,
Quantity = SaleQuantity,
Price = SalePrice,
Note = SaleNote,
});
完成結果如下圖:
再來就找到 AddOrderPage 變更其中的 Entry 原本設定的 Text 內容為 Binding 的作法:
Text="{Binding SaleQuantity}"
Text="{Binding SalePrice}"
Text="{Binding SaleNote}"
完成結果如下圖:
在發動 "下訂單" 執行時的效果,點選 "完成" 加入訂單當中:
然後再到 "訂單列表" 去確認訂單與明細: